#include<bits/stdc++.h>
using namespace std;
//酒数时刻都要小于等于花数
const int N=1000000007;
int dp[110][110][110];//dp[i][j][k]表示i个酒，j个店，k个花，以花结尾   有多少情况
 
int dfs(int i,int j,int k)//记忆化搜索dfs
{
    if(i>k) return 0;
	if(i<0 ||j<0 ||k< 0) return 0;
    
	if(j==0 && i==2 && k==2)
	{
		return 1;
	}
	
	if(dp[i][j][k]!=-1) return dp[i][j][k];
	return dp[i][j][k]=(dfs(i*2,j-1,k)+dfs(i-1,j,k-1))%N; 
}
int main()
{
	memset(dp,-1,sizeof(dp));
	int n,m;
	cin>>n>>m;
	cout<<dfs(2,n,m);
	
	
	return 0;
}